As users' demand of a web application or other service on a server (e.g., file server, database server, customer relationship management server) increases, typically a single server end station is no longer sufficient to serve the number of requests to the server. Instead, the service is distributed across a collection of server end stations, each running an instance of the server software and possibly sharing certain resources, such as a storage backend. When a request arrives at this collection of servers, or server farm, the request is routed to a particular server on the server farm for that server to process this request. The multiple requests that arrive at the server farm should be distributed among the various servers in such a way such that the resource load on each server is roughly equal to the other servers, or such that the server farm can be utilized efficiently to serve all the requests without any single request incurring any significant penalty in response time or other performance metric.
This distribution of requests is typically performed by a server load balancer, which may be implemented using a combination of hardware and/or software. A request that is routed to the server farm may encounter this server load balancer before being routed to one of the servers in the server farm by the load balancer. As the server load balancer minimally processes any traffic it receives, and in most cases simply redirects the traffic based on a distribution algorithm, it can handle more traffic than a single server in the server farm can. Thus, one server load balancer may be able to redirect requests for a large number of servers on the server farm.
However, as the number of requests and processes that the server farm needs to service increases, eventually a single server farm may not be able to handle all the requests within an acceptable performance requirement. In this case, the server farm may employ more than one server load balancer in order to redirect the very large number of requests received by the server farm.
Current implementations of server load balancers are not able to scale easily to meet the demands of a large server farm as the amount of traffic and the number of servers in the server farm grows. Many implementations of server load balancers are not scalable at all, one example being where a single server load balancer is connected to one or more servers of a server farm in a Virtual Local Area Network (VLAN), and the VLAN communicates with an external network through a router. Other implementations, such as those using link aggregation, are confined to a single broadcast domain and become unpractical in datacenters with a tiered hierarchy of switches, among other issues.
Therefore, a better solution to scaling a server load balancer is desired.